/*
 * Project Name:hbm-be.
 * File Name:CsSmNoticeServiceImpl.java
 * Package Name:com.hginfo.cs.be.service.impl.cs
 * Date:2018年04月24日 下午3:58:49
 * Copyright (c) 2016, hongguaninfo.com All Rights Reserved.
 *
 */
package cn.uce.common.omg.biz.impl;

import cn.uce.base.page.Page;
import cn.uce.base.page.Pagination;
import cn.uce.base.vo.IcsOrgTreeNodeVo;
import cn.uce.base.vo.IcsOrgVo;
import cn.uce.common.omg.biz.IOmgOrgBiz;
import cn.uce.common.omg.cache.CacheUtil;
import cn.uce.common.omg.service.OmgOrgService;
import cn.uce.utils.StringUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 公告表: cs_sm_notice. <br />
 * service impl 层 <br />
 * Date: 2018年04月24日 下午3:58:49 <br />
 *
 * @author you
 * @since V1.0.0
 */
@Service("omgOrgBiz")
@Transactional(readOnly = true, propagation= Propagation.SUPPORTS, rollbackFor = Exception.class)
public class OmgOrgBiz implements IOmgOrgBiz {

	/**
	 * @author QGH
	 */
	@Resource
	private OmgOrgService omgOrgService;


	@Override
	public IcsOrgVo getOrgInforByCmsBaseOrgCode(String baseOrgCode) {
		//缓存查询机构
//		return CacheUtil.getOrgInforByCmsBaseOrgCode(baseOrgCode);
		//直接数据库查询机构
		return omgOrgService.getOrgInforByCmsBaseOrgCode(baseOrgCode);
	}

	@Override
	public IcsOrgVo getOrgInforByCmsBaseOrgCodeAllStatus(String baseOrgCode) {
		return omgOrgService.getOrgInforByCmsBaseOrgCodeAllStatus(baseOrgCode);
	}

	@Override
	public IcsOrgVo getCmsOrgInforByCmsOrgId(Integer cmsOrgId) {
		return omgOrgService.getCmsOrgInforByCmsOrgId(cmsOrgId);
	}

	/**
	 * 根据机构编码查询机构信息
	 * @param baseOrgCode
	 * @return
	 */
	@Override
	public IcsOrgVo getOrgAndCmsOrgInforByCmsBaseOrgCode(String baseOrgCode) {
		return omgOrgService.getOrgAndCmsOrgInforByCmsBaseOrgCode(baseOrgCode);
	}

	/**
	 * (非 Javadoc)
	 * <p>Title: findAsyOrgTree</p>
	 * <p>Description: findAsyOrgTree</p>
	 * @param orgVo
	 * @return
	 * @see cn.uce.web.authorg.biz.IOrgBiz#findAsyOrgTree(cn.uce.web.authorg.vo.OrgVo)
	 */
	@Override
	public List<IcsOrgTreeNodeVo> findAsyOrgTree(IcsOrgVo orgVo) {
		List<IcsOrgTreeNodeVo> list = omgOrgService.findOrgTreeNode(orgVo);
		return list;
	}

	/**
	 * 查询网点code
	 * @param orgVo
	 * @return
	 */
	@Override
	public List<IcsOrgTreeNodeVo> findOrgCodeWebsite(IcsOrgVo orgVo) {
		return omgOrgService.findOrgCodeWebsite(orgVo);
	}

	/**
	 * 根据机构类型查询机构信息
	 * @param icsOrgVo
	 * @return
	 */
	@Override
	public List<IcsOrgVo> findOrgCmsByOrgType(IcsOrgVo icsOrgVo){
		String orgTypeStr = icsOrgVo.getOrgTypeStr();
		if(StringUtil.isNotEmpty(orgTypeStr)){
			orgTypeStr = orgTypeStr.replaceAll(",","_");
		}
		return CacheUtil.getOrgCmsByOrgType(CacheUtil.OMG_CMS_ORG_TYPE+"_"+orgTypeStr);
//		return omgOrgService.findOrgCmsByOrgType(icsOrgVo);
	}

	@Override
	public List<IcsOrgVo> findOrgCmsByOrgTypeDB(IcsOrgVo icsOrgVo){
//		//做模糊处理查询
//		List<IcsOrgVo> list = CacheUtil.getOmgCmsOrgAll();//使用缓存;
//		List<IcsOrgVo> listTmp = new ArrayList<IcsOrgVo>();
//		if(null != list && list.size() > 0){
//			for (IcsOrgVo orgVo : list) {
//				if(null != orgVo && StringUtil.isNotBlank(orgVo.getOrgName())
//						&& StringUtil.isNotBlank(icsOrgVo.getOrgNameForQue())
//						&& orgVo.getOrgName().indexOf(icsOrgVo.getOrgNameForQue()) >= 0){
//					listTmp.add(orgVo);
//				}
//			}
//		}
//		//如果缓存获取不到直接从数据库查询
//		if(null == listTmp || listTmp.size() <= 0){
//			listTmp = omgOrgService.findOrgCmsByOrgType(icsOrgVo);
//		}
//		return listTmp;
		return omgOrgService.findOrgCmsByOrgType(icsOrgVo);
	}

	@Override
	public Pagination<IcsOrgVo> findOrgCmsByOrgTypePage(IcsOrgVo icsOrgVo, Page page) {
		return omgOrgService.findOrgCmsByOrgTypePage(icsOrgVo,page);
	}

	/**
	 * 根据机构类型查询机构信息 查询全部状态的
	 * @param icsOrgVo
	 * @return
	 */
	@Override
	public List<IcsOrgVo> findOrgCmsByOrgTypeAllStatus(IcsOrgVo icsOrgVo){
		return omgOrgService.findOrgCmsByOrgType(icsOrgVo);
	}

	@Override
	public List<IcsOrgVo> getOrgOfNotSelf(Map<String, Object> icsOrgVo) {
		return omgOrgService.getOrgOfNotSelf(icsOrgVo);
	}

	@Override
	public List<IcsOrgVo> findAllOrg(Map<String, Object> orgMap) {
		// TODO Auto-generated method stub
		return omgOrgService.findAllOrg(orgMap);
	}

	@Override
	public List<IcsOrgVo> findOrgByOrgCode(Map<String, Object> orgMap) {
		// TODO Auto-generated method stub
		return omgOrgService.findOrgByOrgCode(orgMap);
	}


//	@Override
//	public IcsOrgVo fingEmpOrgByEmpCode(String empCode) {
//		// TODO Auto-generated method stub
//		return omgOrgService.fingEmpOrgByEmpCode(empCode);
//	}

	@Override
	public IcsOrgVo fingOrgByOrgCode(Map<String,Object> map) {
		// TODO Auto-generated method stub
		return omgOrgService.fingOrgByOrgCode(map);
	}

	@Override
	public List<IcsOrgVo> fingOmgOrgByCode(Map<String, Object> map) {
		// TODO Auto-generated method stub
		return omgOrgService.fingOmgOrgByCode(map);
	}

	@Override
	public List<IcsOrgVo> findAllProvinceOrg(Map<String, Object> orgMap) {
		// TODO Auto-generated method stub
		return omgOrgService.findAllProvinceOrg(orgMap);
	}

	@Override
	public IcsOrgVo findOmgOrgByEmpCode(String empCode) {
		// TODO Auto-generated method stub
		return omgOrgService.findOmgOrgByEmpCode(empCode);
	}

	@Override
	public List<IcsOrgVo> findAllCmsOrg(Map<String, Object> map) {
		// TODO Auto-generated method stub
		return omgOrgService.findAllCmsOrg(map);
	}

	@Override
	public List<IcsOrgVo> findAllFinanceCenter() {
		// TODO Auto-generated method stub
		return omgOrgService.findAllFinanceCenter();
	}

	@Override
	public String findOrgNameByOrgId(String orgId) {
		// TODO Auto-generated method stub
		return omgOrgService.findOrgNameByOrgId(orgId);
	}

	@Override
	public IcsOrgVo findOrgByCode(Map<String, Object> map) {
		// TODO Auto-generated method stub
		return omgOrgService.findOrgByCode(map);
	}

	@Override
	public Pagination<IcsOrgVo> findByByCondition(IcsOrgVo omgCmsOrgVo, Page page) {
		return omgOrgService.findByByCondition(omgCmsOrgVo,page);
	}
	@Override
    public List<String> findOrgByParentByOrgCode(String cmsBaseOrgCode) {
		return omgOrgService.findOrgByParentByOrgCode(cmsBaseOrgCode);
	}
	@Override
	public String findCmsOrgByOrgType(String cmsBaseOrgCode){
		return omgOrgService.findCmsOrgByOrgType(cmsBaseOrgCode);
	}

	@Override
	public List<String> findBaseOrgCodeByParentOrgCode(String cmsBaseOrgCode) {
		return omgOrgService.findBaseOrgCodeByParentOrgCode(cmsBaseOrgCode);
	}

	@Override
	public List<String> findBaseOrgCodeByFinanceOrgCode(String cmsBaseOrgCode) {
		return omgOrgService.findBaseOrgCodeByFinanceOrgCode(cmsBaseOrgCode);
	}

	@Override
	public Pagination<IcsOrgVo> findAllOrgByPage(IcsOrgVo omgCmsOrgVo, Page page) {
		return omgOrgService.findAllOrgByPage(omgCmsOrgVo,page);
	}

	@Override
	public List<IcsOrgVo> findFinanceCenterAndAccCode(Map<String, Object> param) {
		return omgOrgService.findFinanceCenterAndAccCode(param);
	}

	@Override
	public List<IcsOrgVo> findOrgNamesByBaseOrgCodes(List<String> baseOrgCodes) {
		return omgOrgService.findOrgNamesByBaseOrgCodes(baseOrgCodes);
	}

	/**
	 * 查询总部机构
	 * @return
	 */
	@Override
	public String getHqOrgCode() {
		IcsOrgVo icsOrgVo = new IcsOrgVo();
		icsOrgVo.setOrgTypeStr("10");
		List<IcsOrgVo> orgList = omgOrgService.findOrgCmsByOrgTypeAllStatus(icsOrgVo);
		if (orgList != null && !orgList.isEmpty()) {
			return orgList.get(0).getBaseOrgCode();
		}
		return null;
	}
}
